1   /*
2    * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.
8    *
9    * This code is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12   * version 2 for more details (a copy is included in the LICENSE file that
13   * accompanied this code).
14   *
15   * You should have received a copy of the GNU General Public License version
16   * 2 along with this work; if not, write to the Free Software Foundation,
17   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18   *
19   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20   * or visit www.oracle.com if you need additional information or have any
21   * questions.
22   */
23  /*
24      @test
25      @summary test ISO639-2 language codes
26      @compile -encoding ascii -source 5 Bug4175998Test.java
27      @run main Bug4175998Test
28      @bug 4175998
29  */
30  /*
31   *
32   *
33   * (C) Copyright IBM Corp. 1998 - All Rights Reserved
34   *
35   * The original version of this source code and documentation is
36   * copyrighted and owned by IBM. These materials are provided
37   * under terms of a License Agreement between IBM and Sun.
38   * This technology is protected by multiple US and International
39   * patents. This notice and attribution to IBM may not be removed.
40   *
41   */
42  
43  import java.util.*;
44  import java.io.*;
45  
46  /**
47   *  Bug4175998Test verifies that the following bug has been fixed:
48   *  Bug 4175998 - The java.util.Locale.getISO3Language() returns wrong result for a locale with
49   *           language code 'ta'(Tamil).
50   */
51  public class Bug4175998Test extends LocaleTestFmwk {
52      public static void main(String[] args) throws Exception {
53          new Bug4175998Test().run(args);
54          //generateTables();    //uncomment this to regenerate data tables
55      }
56  
57      public void testIt() throws Exception {
58          boolean bad = false;
59          for (int i = 0; i < CODES.length; i++) {
60              final String[] localeCodes = CODES[i];
61              final Locale l = new Locale(localeCodes[0], "");
62              final String iso3 = l.getISO3Language();
63              if (!iso3.equals(localeCodes[1]) /*&& !iso3.equals(localeCodes[2])*/) {
64                  logln("Locale("+l+") returned bad ISO3 language code."
65                          +"   Got '"+iso3+"' instead of '"+localeCodes[1]+"'"/*+" or '"+localeCodes[2]+"'"*/);
66                  bad = true;
67              }
68          }
69          if (bad) {
70              errln("Bad ISO3 language codes detected.");
71          }
72      }
73  
74       private static final String[][] CODES = {
75          {"pt","por","por"},
76          {"eu","eus","baq"},
77          {"ps","pus","pus"},
78          {"et","est","est"},
79          {"ka","kat","geo"},
80          {"es","spa","spa"},
81          {"eo","epo","epo"},
82          {"en","eng","eng"},
83          {"pl","pol","pol"},
84          {"el","ell","gre"},
85          {"uz","uzb","uzb"},
86          {"jv","jav","jav"},
87          {"ur","urd","urd"},
88          {"uk","ukr","ukr"},
89          {"ug","uig","uig"},
90          {"zu","zul","zul"},
91          {"ja","jpn","jpn"},
92          {"or","ori","ori"},
93          {"om","orm","orm"},
94          {"zh","zho","chi"},
95          {"tw","twi","twi"},
96          {"de","deu","ger"},
97          {"oc","oci","oci"},
98          {"za","zha","zha"},
99          {"tt","tat","tat"},
100         {"iu","iku","iku"},
101         {"ts","tso","tso"},
102         {"it","ita","ita"},
103         {"tr","tur","tur"},
104         {"da","dan","dan"},
105         {"is","isl","ice"},
106         {"to","ton","ton"},
107         {"tl","tgl","tgl"},
108         {"tk","tuk","tuk"},
109         {"ik","ipk","ipk"},
110         {"ti","tir","tir"},
111         {"th","tha","tha"},
112         {"tg","tgk","tgk"},
113         {"te","tel","tel"},
114         {"cy","cym","wel"},
115         {"ie","ile","ile"},
116         {"id","ind","ind"},
117         {"ta","tam","tam"},
118         {"ia","ina","ina"},
119         {"cs","ces","cze"},
120         {"yo","yor","yor"},
121         {"no","nor","nor"},
122         {"co","cos","cos"},
123         {"nl","nld","dut"},
124         {"yi","yid","yid"},
125         {"hy","hye","arm"},
126         {"sw","swa","swa"},
127         {"ne","nep","nep"},
128         {"sv","swe","swe"},
129         {"su","sun","sun"},
130         {"hu","hun","hun"},
131         {"na","nau","nau"},
132         {"sr","srp","scc"},
133         {"ca","cat","cat"},
134         {"sq","sqi","alb"},
135         {"hr","hrv","scr"},
136         {"so","som","som"},
137         {"sn","sna","sna"},
138         {"sm","smo","smo"},
139         {"sl","slv","slv"},
140         {"sk","slk","slo"},
141         {"si","sin","sin"},
142         {"hi","hin","hin"},
143         {"my","mya","bur"},
144         {"sd","snd","snd"},
145         {"he","heb","heb"},
146         {"sa","san","san"},
147         {"mt","mlt","mlt"},
148         {"ms","msa","may"},
149         {"ha","hau","hau"},
150         {"mr","mar","mar"},
151         {"br","bre","bre"},
152         {"mo","mol","mol"},
153         {"bo","bod","tib"},
154         {"mn","mon","mon"},
155         {"bn","ben","ben"},
156         {"ml","mal","mal"},
157         {"mk","mkd","mac"},
158         {"xh","xho","xho"},
159         {"mi","mri","mao"},
160         {"bi","bis","bis"},
161         {"bh","bih","bih"},
162         {"mg","mlg","mlg"},
163         {"bg","bul","bul"},
164         {"rw","kin","kin"},
165         {"be","bel","bel"},
166         {"ru","rus","rus"},
167         {"gu","guj","guj"},
168         {"ba","bak","bak"},
169         {"ro","ron","rum"},
170         {"rm","roh","roh"},
171         {"gn","grn","grn"},
172         {"az","aze","aze"},
173         {"ay","aym","aym"},
174         {"gd","gla","gla"},
175         {"lv","lav","lav"},
176         {"lt","lit","lit"},
177         {"ga","gle","gle"},
178         {"as","asm","asm"},
179         {"ar","ara","ara"},
180         {"wo","wol","wol"},
181         {"ln","lin","lin"},
182         {"am","amh","amh"},
183         {"fy","fry","fry"},
184         {"af","afr","afr"},
185         {"qu","que","que"},
186         {"ab","abk","abk"},
187         {"la","lat","lat"},
188         {"aa","aar","aar"},
189         {"fr","fra","fre"},
190         {"fo","fao","fao"},
191         {"fj","fij","fij"},
192         {"fi","fin","fin"},
193         {"ky","kir","kir"},
194         {"ku","kur","kur"},
195         {"fa","fas","per"},
196         {"ks","kas","kas"},
197         {"vo","vol","vol"},
198         {"ko","kor","kor"},
199         {"kn","kan","kan"},
200         {"kk","kaz","kaz"},
201         {"vi","vie","vie"},
202     };
203 
204 /*
205     The following code was used to generate the table above from the two ISO standards.
206     It matches the language names (not the codes) from both standards to associate
207     the two and three letter codes.
208 
209     private static final String ISO639 = "d:\\temp\\iso639.txt";
210     private static final String ISO6392 = "d:\\temp\\iso-639-2.txt";
211     private static void generateTables() {
212         try {
213             BufferedReader ISO639File = new BufferedReader(new FileReader(ISO639));
214             Hashtable i639 = new Hashtable();
215             for (String line = ISO639File.readLine(); line != null; line = ISO639File.readLine()) {
216                 if (!line.startsWith("#")) {
217                     final int ndx = line.indexOf(' ');
218                     final String arg1 = line.substring(0, ndx);
219                     final int ndx2 = line.indexOf(' ', ndx+1);
220                     final String arg2 = line.substring(ndx+1, ndx2 < 0 ? line.length() : ndx2);
221                     i639.put(arg1, arg2);
222                 }
223             }
224 
225             BufferedReader ISO6392File = new BufferedReader(new FileReader(ISO6392));
226             Hashtable i6392 = new Hashtable();
227             for (String line = ISO6392File.readLine(); line != null; line = ISO6392File.readLine()) {
228                 final int ndx = line.indexOf(' ');
229                 final int ndx2 = line.indexOf(' ', ndx+1);
230                 int ndx3 = line.indexOf(' ', ndx2+1);
231                 if (ndx3 < 0) ndx3 = line.length();
232                 final String arg1 = line.substring(0, ndx);
233                 final String arg2 = line.substring(ndx+1, ndx2);
234                 final String arg3 = line.substring(ndx2+1, ndx3);
235                 i6392.put(arg3, new ISO6392Entry(arg1, arg2));
236             }
237 
238             Enumeration keys = i639.keys();
239             while (keys.hasMoreElements()) {
240                 final Object key = keys.nextElement();
241                 final Object name = i639.get(key);
242                 final Object value = i6392.get(name);
243 
244                 if (value != null) {
245                     System.out.print("{");
246                     System.out.print("\""+key+"\",");
247                     System.out.print(value);
248                     System.out.println("},");
249                 }
250             }
251         } catch (Exception e) {
252             System.out.println(e);
253         }
254     }
255 
256 
257     private static final class ISO6392Entry {
258         public final String code;
259         public final String name;
260         public ISO6392Entry(String code, String name) {
261             this.code = code;
262             this.name = name;
263         }
264         public String toString() {
265             return "\""+code+"\",\""+name+"\"";
266         }
267 
268     }
269 */
270 
271 }
272 
273 /*
274 
275 data from ftp://dkuug.dk on March 4, 1999
276 verified by http://www.triacom.com/archive/iso639-2.en.html
277 
278 iso 639 data
279 aa Afar
280 ab Abkhazian
281 af Afrikaans
282 am Amharic
283 ar Arabic
284 as Assamese
285 ay Aymara
286 az Azerbaijani
287 ba Bashkir
288 be Belarussian
289 bg Bulgarian
290 bh Bihari
291 bi Bislama
292 bn Bengali
293 bo Tibetan
294 br Breton
295 ca Catalan
296 co Corsican
297 cs Czech
298 cy Welsh
299 da Danish
300 de German
301 dz Bhutani
302 el Greek
303 en English
304 eo Esperanto
305 es Spanish
306 et Estonian
307 eu Basque
308 fa Persian
309 fi Finnish
310 fj Fijian
311 fo Faroese
312 fr French
313 fy Frisian
314 ga Irish
315 gd Gaelic
316 gl Galician
317 gn Guarani
318 gu Gujarati
319 ha Hausa
320 he Hebrew
321 hi Hindi
322 hr Croatian
323 hu Hungarian
324 hy Armenian
325 ia Interlingua
326 id Indonesian
327 ie Interlingue
328 ik Inupiak
329 is Icelandic
330 it Italian
331 iu Inuktitut
332 ja Japanese
333 jw Javanese
334 ka Georgian
335 kk Kazakh
336 kl Greenlandic
337 km Cambodian
338 kn Kannada
339 ko Korean
340 ks Kashmiri
341 ku Kurdish
342 ky Kirghiz
343 la Latin
344 ln Lingala
345 lo Laothian
346 lt Lithuanian
347 lv Latvian
348 mg Malagasy
349 mi Maori
350 mk Macedonian
351 ml Malayalam
352 mn Mongolian
353 mo Moldavian
354 mr Marathi
355 ms Malay
356 mt Maltese
357 my Burmese
358 na Nauru
359 ne Nepali
360 nl Dutch
361 no Norwegian
362 oc Occitan
363 om Oromo
364 or Oriya
365 pa Punjabi
366 pl Polish
367 ps Pushto
368 pt Portuguese
369 qu Quechua
370 rm Raeto-Romance
371 rn Kirundi
372 ro Romanian
373 ru Russian
374 rw Kinyarwanda
375 sa Sanskrit
376 sd Sindhi
377 sg Sangho
378 sh Croatian (Serbo)
379 si Sinhalese
380 sk Slovak
381 sl Slovenian
382 sm Samoan
383 sn Shona
384 so Somali
385 sq Albanian
386 sr Serbian
387 ss Siswati
388 st Sesotho
389 su Sundanese
390 sv Swedish
391 sw Swahili
392 ta Tamil
393 te Telugu
394 tg Tajik
395 th Thai
396 ti Tigrinya
397 tk Turkmen
398 tl Tagalog
399 tn Setswana
400 to Tonga
401 tr Turkish
402 ts Tsonga
403 tt Tatar
404 tw Twi
405 ug Uighur
406 uk Ukrainian
407 ur Urdu
408 uz Uzbek
409 vi Vietnamese
410 vo Volapuk
411 wo Wolof
412 xh Xhosa
413 yi Yiddish
414 yo Yoruba
415 za Zhuang
416 zh Chinese
417 zu Zulu
418 
419 ISO 639-2 data
420 
421 aar aar Afar
422 abk abk Abkhazian
423 ace ace Achinese
424 ach ach Acoli
425 ada ada Adangme
426 afa afa Afro-Asiatic (Other)
427 afh afh Afrihili
428 afr afr Afrikaans
429 aka aka Akan
430 akk akk Akkadian
431 ale ale Aleut
432 alg alg Algonquian languages
433 amh amh Amharic
434 ang ang English-Old (ca. 450-1100)
435 apa apa Apache languages
436 ara ara Arabic
437 arc arc Aramaic
438 arn arn Araucanian
439 arp arp Arapaho
440 art art Artificial (Other)
441 arw arw Arawak
442 asm asm Assamese
443 ath ath Athapascan languages
444 aus aus Australian languages
445 ava ava Avaric
446 ave ave Avestan
447 awa awa Awadhi
448 aym aym Aymara
449 aze aze Azerbaijani
450 bad bad Banda
451 bai bai Bamileke languages
452 bak bak Bashkir
453 bal bal Baluchi
454 bam bam Bambara
455 ban ban Balinese
456 bas bas Basa
457 bat bat Baltic (Other)
458 bej bej Beja
459 bel bel Belarussian
460 bem bem Bemba
461 ben ben Bengali
462 ber ber Berber (Other)
463 bho bho Bhojpuri
464 bih bih Bihari
465 bik bik Bikol
466 bin bin Bini
467 bis bis Bislama
468 bla bla Siksika
469 bnt bnt Bantu (Other)
470 bod tib Tibetan
471 bra bra Braj
472 bre bre Breton
473 btk btk Batak (Indonesia)
474 bua bua Buriat
475 bug bug Buginese
476 bul bul Bulgarian
477 cad cad Caddo
478 cai cai Central-American-Indian (Other)
479 car car Carib
480 cat cat Catalan
481 cau cau Caucasian (Other)
482 ceb ceb Cebuano
483 cel cel Celtic (Other)
484 ces cze Czech
485 cha cha Chamorro
486 chb chb Chibcha
487 che che Chechen
488 chg chg Chagatai
489 chk chk Chuukese
490 chm chm Mari
491 chn chn Chinook-jargon
492 cho cho Choctaw
493 chp chp Chipewyan
494 chr chr Cherokee
495 chu chu Church-Slavic
496 chv chv Chuvash
497 chy chy Cheyenne
498 cmc cmc Chamic languages
499 cop cop Coptic
500 cor cor Cornish
501 cos cos Corsican
502 cpe cpe Creoles-and-pidgins-English-based (Other)
503 cpf cpf Creoles-and-pidgins-French-based (Other)
504 cpp cpp Creoles-and-pidgins-Portuguese-based (Other)
505 cre cre Cree
506 crp crp Creoles-and-pidgins (Other)
507 cus cus Cushitic (Other)
508 cym wel Welsh
509 dak dak Dakota
510 dan dan Danish
511 day day Dayak
512 del del Delaware
513 den den Slave (Athapascan)
514 deu ger German
515 dgr dgr Dogrib
516 din din Dinka
517 div div Divehi
518 doi doi Dogri
519 dra dra Dravidian (Other)
520 dua dua Duala
521 dum dum Dutch-Middle (ca. 1050-1350)
522 dyu dyu Dyula
523 dzo dzo Dzongkha
524 efi efi Efik
525 egy egy Egyptian (Ancient)
526 eka eka Ekajuk
527 ell gre Greek Modern (post 1453)
528 elx elx Elamite
529 eng eng English
530 enm enm English-Middle (1100-1500)
531 epo epo Esperanto
532 est est Estonian
533 eus baq Basque
534 ewe ewe Ewe
535 ewo ewo Ewondo
536 fan fan Fang
537 fao fao Faroese
538 fas per Persian
539 fat fat Fanti
540 fij fij Fijian
541 fin fin Finnish
542 fiu fiu Finno-Ugrian (Other)
543 fon fon Fon
544 fra fre French
545 frm frm French-Middle (ca. 1400-1600)
546 fro fro French-Old (842-ca. 1400)
547 fry fry Frisian
548 ful ful Fulah
549 fur fur Friulian
550 gaa gaa Ga
551 gay gay Gayo
552 gba gba Gbaya
553 gem gem Germanic (Other)
554 gez gez Geez
555 gil gil Gilbertese
556 gdh gae Gaelic
557 gai iri Irish
558 glg glg Gallegan
559 glv glv Manx
560 gmh gmh German-Middle High (ca. 1050-1500)
561 goh goh German-Old High (ca. 750-1050)
562 gon gon Gondi
563 gor gor Gorontalo
564 got got Gothic
565 grb grb Grebo
566 grc grc Greek-Ancient (to 1453)
567 grn grn Guarani
568 guj guj Gujarati
569 gwi gwi Gwich'in
570 hai hai Haida
571 hau hau Hausa
572 haw haw Hawaiian
573 heb heb Hebrew
574 her her Herero
575 hil hil Hiligaynon
576 him him Himachali
577 hin hin Hindi
578 hit hit Hittite
579 hmn hmn Hmong
580 hmo hmo Hiri Motu
581 hrv scr Croatian
582 hun hun Hungarian
583 hup hup Hupa
584 hye arm Armenian
585 iba iba Iban
586 ibo ibo Igbo
587 ijo ijo Ijo
588 iku iku Inuktitut
589 ile ile Interlingue
590 ilo ilo Iloko
591 ina ina Interlingua (International Auxilary Language Association)
592 inc inc Indic (Other)
593 ind ind Indonesian
594 ine ine Indo-European (Other)
595 ipk ipk Inupiak
596 ira ira Iranian (Other)
597 iro iro Iroquoian languages
598 isl ice Icelandic
599 ita ita Italian
600 jaw jav Javanese
601 jpn jpn Japanese
602 jpr jpr Judeo-Persian
603 jrb jrb Judeo-Arabic
604 kaa kaa Kara-Kalpak
605 kab kab Kabyle
606 kac kac Kachin
607 kal kal Kalaallisut
608 kam kam Kamba
609 kan kan Kannada
610 kar kar Karen
611 kas kas Kashmiri
612 kat geo Georgian
613 kau kau Kanuri
614 kaw kaw Kawi
615 kaz kaz Kazakh
616 kha kha Khasi
617 khi khi Khoisan (Other)
618 khm khm Khmer
619 kho kho Khotanese
620 kik kik Kikuyu
621 kin kin Kinyarwanda
622 kir kir Kirghiz
623 kmb kmb Kimbundu
624 kok kok Konkani
625 kom kom Komi
626 kon kon Kongo
627 kor kor Korean
628 kos kos Kosraean
629 kpe kpe Kpelle
630 kro kro Kru
631 kru kru Kurukh
632 kua kua Kuanyama
633 kum kum Kumyk
634 kur kur Kurdish
635 kut kut Kutenai
636 lad lad Ladino
637 lah lah Lahnda
638 lam lam Lamba
639 lao lao Lao
640 lat lat Latin
641 lav lav Latvian
642 lez lez Lezghian
643 lin lin Lingala
644 lit lit Lithuanian
645 lol lol Mongo
646 loz loz Lozi
647 ltz ltz Letzeburgesch
648 lua lua Luba-Lulua
649 lub lub Luba-Katanga
650 lug lug Ganda
651 lui lui Luiseno
652 lun lun Lunda
653 luo luo Luo (Kenya and Tanzania)
654 lus lus Lushai
655 mad mad Madurese
656 mag mag Magahi
657 mah mah Marshall
658 mai mai Maithili
659 mak mak Makasar
660 mal mal Malayalam
661 man man Mandingo
662 map map Austronesian (Other)
663 mar mar Marathi
664 mas mas Masai
665 mdr mdr Mandar
666 men men Mende
667 mga mga Irish-Middle (900-1200)
668 mic mic Micmac
669 min min Minangkabau
670 mis mis Miscellaneous languages
671 mkd mac Macedonian
672 mkh mkh Mon-Khmer (Other)
673 mlg mlg Malagasy
674 mlt mlt Maltese
675 mni mni Manipuri
676 mno mno Manobo languages
677 moh moh Mohawk
678 mol mol Moldavian
679 mon mon Mongolian
680 mos mos Mossi
681 mri mao Maori
682 msa may Malay
683 mul mul Multiple languages
684 mun mun Munda languages
685 mus mus Creek
686 mwr mwr Marwari
687 mya bur Burmese
688 myn myn Mayan languages
689 nah nah Nahuatl
690 nai nai North American Indian (Other)
691 nau nau Nauru
692 nav nav Navajo
693 nbl nbl Ndebele, South
694 nde nde Ndebele, North
695 ndo ndo Ndonga
696 nep nep Nepali
697 new new Newari
698 nia nia Nias
699 nic nic Niger-Kordofanian (Other)
700 niu niu Niuean
701 nld dut Dutch
702 non non Norse, Old
703 nor nor Norwegian
704 nso nso Sohto, Northern
705 nub nub Nubian languages
706 nya nya Nyanja
707 nym nym Nyamwezi
708 nyn nyn Nyankole
709 nyo nyo Nyoro
710 nzi nzi Nzima
711 oci oci Occitan (post 1500)
712 oji oji Ojibwa
713 ori ori Oriya
714 orm orm Oromo
715 osa osa Osage
716 oss oss Ossetic
717 ota ota Turkish, Ottoman (1500-1928)
718 oto oto Otomian languages
719 paa paa Papuan (Other)
720 pag pag Pangasinan
721 pal pal Pahlavi
722 pam pam Pampanga
723 pan pan Panjabi
724 pap pap Papiamento
725 pau pau Palauan
726 peo peo Persian, Old (ca. 600-400 B.C.)
727 phi phi Philippine (Other)
728 phn phn Phoenician
729 pli pli Pali
730 pol pol Polish
731 pon pon Pohnpeian
732 por por Portuguese
733 pra pra Prakrit languages
734 pro pro Proven�al, Old (to 1500)
735 pus pus Pushto
736 qaa-qtz qaa-qtz Reserved for local use
737 que que Quechua
738 raj raj Rajasthani
739 rap rap Rapanui
740 rar rar Rarotongan
741 roa roa Romance (Other)
742 roh roh Raeto-Romance
743 rom rom Romany
744 ron rum Romanian
745 run run Rundi
746 rus rus Russian
747 sad sad Sandawe
748 sag sag Sango
749 sah sah Yakut
750 sai sai South American Indian (Other)
751 sal sal Salishan languages
752 sam sam Samaritan Aramaic
753 san san Sanskrit
754 sas sas Sasak
755 sat sat Santali
756 sco sco Scots
757 sel sel Selkup
758 sem sem Semitic (Other)
759 sga sga Irish-Old (to 900)
760 shn shn Shan
761 sid sid Sidamo
762 sin sin Sinhalese
763 sio sio Siouan languages
764 sit sit Sino-Tibetan (Other)
765 sla sla Slavic (Other)
766 slk slo Slovak
767 slv slv Slovenian
768 smi smi Sami languages
769 smo smo Samoan
770 sna sna Shona
771 snd snd Sindhi
772 snk snk Soninke
773 sog sog Sogdian
774 som som Somali
775 son son Songhai
776 sot sot Sotho Southern
777 spa spa Spanish
778 sqi alb Albanian
779 srd srd Sardinian
780 srp scc Serbian
781 srr srr Serer
782 ssa ssa Nilo-Saharan (Other)
783 ssw ssw Swati
784 suk suk Sukuma
785 sun sun Sundanese
786 sus sus Susu
787 sux sux Sumerian
788 swa swa Swahili
789 swe swe Swedish
790 syr syr Syriac
791 tah tah Tahitian
792 tai tai Tai (Other)
793 tam tam Tamil
794 tat tat Tatar
795 tel tel Telugu
796 tem tem Timne
797 ter ter Tereno
798 tet tet Tetum
799 tgk tgk Tajik
800 tgl tgl Tagalog
801 tha tha Thai
802 tig tig Tigre
803 tir tir Tigrinya
804 tiv tiv Tiv
805 tkl tkl Tokelau
806 tli tli Tlingit
807 tmh tmh Tamashek
808 tog tog Tonga (Nyasa)
809 ton ton Tonga (Tonga Islands)
810 tpi tpi Tok Pisin
811 tsi tsi Tsimshian
812 tsn tsn Tswana
813 tso tso Tsonga
814 tuk tuk Turkmen
815 tum tum Tumbuka
816 tur tur Turkish
817 tut tut Altaic
818 tvl tvl Tuvalu
819 twi twi Twi
820 tyv tyv Tuvinian
821 uga uga Ugaritic
822 uig uig Uighur
823 ukr ukr Ukrainian
824 umb umb Umbundu
825 und und Undetermined
826 urd urd Urdu
827 uzb uzb Uzbek
828 vai vai Vai
829 ven ven Venda
830 vie vie Vietnamese
831 vol vol Volapuk
832 vot vot Votic
833 wak wak Wakashan
834 wal wal Walamo
835 war war Waray
836 was was Washo
837 wen wen Sorbian
838 wol wol Wolof
839 xho xho Xhosa
840 yao yao Yao
841 yap yap Yapese
842 yid yid Yiddish
843 yor yor Yoruba
844 ypk ypk Yupik
845 zap zap Zapotec
846 zen zen Zenaga
847 zha zha Zhuang
848 zho chi Chinese
849 znd znd Zande
850 zul zul Zulu
851 zun zun Zuni
852 
853 */